AWS Lumberyardについてメモ


概要

AWS、ゲームエンジン乗っけられるサービス始めたってよ

動かすのとかチュートリアルは割愛。



サービス区分

まずLumberyardというゲームエンジンがある。

次に、GameLiftという「LumberyardをAWS上で動かす基盤サービス」みたいなのがある。



Lumberyard

中身はCryEngine。

forkしたもので、オリジナルに対して投資はしているが買収とかではない。

Client(PC、Consumer、SmartPhone、VRとかで動く)

スマフォとVRは今後サポート。


ゲームエディタ + ゲームエンジンのオーソドックスな構成。いってみりゃ普通。

ただ、AWSとの連携を抽象化してるレイヤーがあって、強烈な部分も。



強烈な部分

Lumberyard上のノードエディタにAWS LambdaとかAWS DynamoDBとかがポンと置ける。

サービス登録とかは別途、って感じなんだろうけど(試してない)、ゲーム中に動作するノードの部分として、


1.ここにきたらDynamo上のデータをこのキーで取得

2.もし値があったらこっちのルート

3.なかったらこっちのルート


とかをノードエディタで書けるのはすごい。超強い。そして怖い。

かる~~いGUI操作の結末として大量にリクエスト流れそうなんですがそれは。

まあ慣れの問題だろきっと。


GameLift

Lumberyardを「サーバ上で特にいろいろやって」動かすための基盤サービス。

このサービスを使わないでもLumberyardをAWS上で動かすことは可能。


ざっくり次の機能と、それに対する課金体制を持つ。

・オートスケーリング

・アクティブ状態のゲームのスワップ

・ユーザーのIdentify

・ユーザーの接続、切断のAPI

・ゲームのステートの生成、破棄などのAPI(ちょっと理解が違うかもしれん)

・以上


はい、強いですね。


オートスケーリング

まーインスタンス足したり引いたり。AWSの真骨頂。

急な負荷でも大丈夫、ガンガンと、、、ガンガンと、、、



アクティブ状態のゲームのスワップ

サーバへのデプロイ時にversion値を付加し、「動作しているゲームを別versionのものに切り替えていく」といったことができるっぽい。

まーアップデートとかデグレードとかをAPI化しましたみたいな話。


ユーザーがActiveなversionへとじわじわ遷移していくのかな。試してないけど。

まあダウンタイムはないよねって話。



ユーザーのIdentify

GameLiftは上記の機能を持つにあたって、ユーザーのIdentifyを勝手にやってくれるっぽい。

もっとも「DAU1000あたりいくら」っていう課金条件があるんで、そのためのものだと思うけど。

次に書く「ユーザーの接続、切断のAPI」とかの基礎としてIdenfityがある印象。



ユーザーの接続、切断のAPI

これらのAPIが定義、提供されている。

発生時にイベントハンドラがなんか言う。


で、ところで、これらのAPI、特に接続がミソで、このタイミングでDAUベースでちょいちょい金がでていく。



ゲームのステートの生成、破棄などのAPI(ちょっと理解が違うかもしれん)

ユーザーの寿命の他に、ゲームのステートみたいなものの寿命も管理できる。

推奨されてるゲームの形状は、「マッチして短期間で解散するもの」みたいな感じで、永遠に稼働し続けるMMOみたいなものは想定していない。 このへんはドキュメントにもしつこく書いてあった。



以上


そう、以上なんだ。


接続、切断とかのAPIはある。


、、、

、、

えっじゃあClient-Server間のゲーム中のデータをやり取りするAPIとかはどうなってるの? っていう疑問を持った?

持つよね?? その疑問持つの俺だけじゃないよね?

無い。全くの自由なんだ。


Client(PC上で動くLumberyard) <-> Server(AWS上で動くLumberyard) 


この2つのPeerのあいだの情報転送は、

接続、切断、ゲームのstate生成とか変更のAPI以外、

何にもない。



君はどんなプロトコルを使っても(多分)いい。


例えばServer側のLumberyardで全部計算して結果を動画でブロードキャスト(Do you remember SHINRA?? )してもいいし、

Client、Server双方で同様のゲームロジックを回して整合性はServer準拠、とかをやってもいい。


どんなプロトコルでもいいわけだよ。

その、、、Client側とServer側が受け入れられて、AWSに乗っけることができれば。


StartとEndだけは定義されてメソッドもハンドラも用意されているんで、、、


Cross Peerでのシンクロナイズとか、そういうのもまあ、、やろうと思えば、、できるわけだ、、、

自分で作れば、、、



Lumberyardのソースコードに関する制約

無い。

すべてオープンソース。


なので、たとえばPhotonみたいな、

「パケットの形状はこのフォーマットです」

「開けるのはServerに到達してからです」

「開いてからしか判断できません」


みたいな制約は無い。素敵だ。Unityですらこの辺は制約として持ちそうなんでアレだが。


っていうか通信部分は基礎以外本当に何も無いもんね!!!


しかも改変するのも自由(ただし再配布は禁じる。そりゃな。)



おおざっぱなLumberyardに関する制約

オンプレミスで動かしても良い。無料。

AWSで動かしても良い。これも無料。GameLiftなどの構造を利用する分にはDAU単位の課金がつく。


ほかのクラウド事業者やレンタルサーバ上で動かすのは禁止。

純粋な制約はこの一項のみ。



twitch

Lumberyardと連携。

チャットの内容をGameにフィードバックできる仕組みがありえる。

チャットからのコマンド入力みたいなもの、応援とかエフェクトとか。

ゲームに対するSlackの発展形か。

 


課金方法の提供

T-シャツ Amazonを介して販売 小売から配送まで

「A選手の優勝の瞬間スクリーンショッT-シャツ」とかができるわけですねすごい。

企業からしたら、商品開発の門戸が増える感じっぽい

App課金とかは従来通り。



ローカルで動かすテストキットがほしいです

一発で他人プレイヤーのログイン代替とか、テスト用のサーバ(micro)とか。

考えてみるかも。



今後?

ほかのゲームエンジン??が乗ると嬉しいな??みたいな話はあると思った。



チュートリアル

YourFirstGame っていうシリーズがあるのでやってみようぜみたいな。



感想

LumberyardはAWSに連携できる機能を内包したゲームエンジン。

GameLiftはそれを使ってGBaaS的な機能を持たせたフレームワーク。


Game Backend as a Service ? それともPlatformか?



とりあえず知ることができてよかった。